package com.hanbang.chu_xing_gao_zhao.base;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.SharedPreferences;
import android.os.Bundle;

import com.hanbang.chu_xing_gao_zhao.application.HttpInterfaces;
import com.hanbang.chu_xing_gao_zhao.entity.PopupData;
import com.hanbang.chu_xing_gao_zhao.utils.JsonHelper;
import com.hanbang.chu_xing_gao_zhao.utils.MyRequestCallBack;
import com.hanbang.chu_xing_gao_zhao.view_city_select.ItemCityData;
import com.lidroid.xutils.exception.DbException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;

public class BaseDataActivity extends BaseActivity {

    /**
     * 年龄-数组
     */
    public static ArrayList<PopupData> ageArrayList = new ArrayList<PopupData>();

    /**
     * 菜系-数组
     */
    public ArrayList<PopupData> styleOfCookingList = new ArrayList<PopupData>();

    /**
     * 职位-数组
     */
    public ArrayList<PopupData> positionList = new ArrayList<PopupData>();
    ;

    /**
     * 城市-数据
     */
    public ArrayList<ItemCityData> cityDataList = new ArrayList<ItemCityData>();

    /**
     * 最热-数据
     */
    public static ArrayList<PopupData> hottestList = new ArrayList<PopupData>();

    /**
     * 排序分类
     */
    public ArrayList<PopupData> sortId = new ArrayList<PopupData>();

    /**
     * 买断式秘籍，排序分类
     */
    public ArrayList<PopupData> sortId_md = new ArrayList<PopupData>();

    /**
     * kf
     * 开放式秘籍，排序分类
     */
    public static ArrayList<PopupData> sortId_kf = new ArrayList<PopupData>();


    /**
     * 资料类型-集合
     */
    public static ArrayList<PopupData> dataTypes = new ArrayList<PopupData>();


    /**
     * 存储职位
     */
    public SharedPreferences.Editor setPositionSP;
    /**
     * 得到职位
     */
    public SharedPreferences getPositionSP;
    /**
     * 取出存放职位
     */
    public Map<Integer, String> positionMap;


    /**
     * 存储菜系
     */
    public SharedPreferences.Editor setCuisineSP;
    /**
     * 得到菜系
     */
    public SharedPreferences getCuisineSP;

    /**
     * 取出存放菜系
     */
    public Map<Integer, String> cuisineMap;


    /**
     * 存储资料类型
     */
    public SharedPreferences.Editor dataTypesSP;
    /**
     * 得到资料类型
     */
    public SharedPreferences getdataTypesSP;
    /**
     * 取出存放资料类型
     */
    public Map<String, String> dataTypesMap;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        init();
        addAgeData();
        getPositionData();
        getSytleOfCookingData();
        addHottstData();
        addDataType();
        addSortId_mds();
        addSortId_kf();
        addSortId();
        getCityData();

    }

    private void init() {
        setPositionSP = getSharedPreferences("positionSP", MODE_PRIVATE).edit();
        getPositionSP = getSharedPreferences("positionSP", MODE_PRIVATE);
        positionMap = new TreeMap<>();

        setCuisineSP = getSharedPreferences("cuisineSP", MODE_PRIVATE).edit();
        getCuisineSP = getSharedPreferences("cuisineSP", MODE_PRIVATE);
        cuisineMap = new TreeMap<Integer, String>();

        dataTypesSP = getSharedPreferences("dataTypesSP", MODE_PRIVATE).edit();
        getdataTypesSP = getSharedPreferences("dataTypesSP", MODE_PRIVATE);
        dataTypesMap = new HashMap<String, String>();

    }

    /**
     * 添加 年龄 数组
     */
    public void addAgeData() {

        if (ageArrayList.size() != 0) {
            return;
        }
        ageArrayList.add(new PopupData(0, "不限", 0, null));
        ageArrayList.add(new PopupData(1, "18岁以下", 0, null));
        ageArrayList.add(new PopupData(2, "18-22", 0, null));
        ageArrayList.add(new PopupData(3, "23-26", 0, null));
        ageArrayList.add(new PopupData(4, "27-35", 0, null));
        ageArrayList.add(new PopupData(5, "36-45", 0, null));
        ageArrayList.add(new PopupData(6, "46-55", 0, null));
        ageArrayList.add(new PopupData(7, "55岁以上", 0, null));


    }

    /**
     * 添加 最热 数组
     */
    public void addHottstData() {
        if (hottestList.size() != 0) {
            return;
        }
        hottestList.add(new PopupData(0, "全部", 0, null));
        hottestList.add(new PopupData(1, "秘籍最多", 0, null));
        hottestList.add(new PopupData(2, "粉丝最多", 0, null));
        hottestList.add(new PopupData(3, "课程最多", 0, null));


    }

    /**
     * 添加排序内容
     */
    public void addSortId() {
        if (sortId.size() != 0) {
            return;
        }
        sortId.add(new PopupData(0, "综合", 0, null));
        sortId.add(new PopupData(1, "销量最多", 1, null));
        sortId.add(new PopupData(2, "评价最高", 2, null));
        sortId.add(new PopupData(3, "价格最高", 3, null));
        sortId.add(new PopupData(4, "价格最低", 4, null));
        sortId.add(new PopupData(5, "免费", 5, null));

    }


    /**
     * 买断式秘籍排序
     * <p/>
     * sort_id：排序的方式，可为空默认1，综合1，最热2，最新3，支持人数4，价格最高5，价格最低6
     */
    public void addSortId_mds() {
        if (sortId.size() != 0) {
            return;
        }
        sortId_md.add(new PopupData(1, "综合", 0, null));
        sortId_md.add(new PopupData(2, "最热", 1, null));
        sortId_md.add(new PopupData(3, "最新", 2, null));
        sortId_md.add(new PopupData(4, "支持人数", 3, null));
        sortId_md.add(new PopupData(5, "价格最高", 4, null));
        sortId_md.add(new PopupData(6, "价格最低", 5, null));

    }


    /**
     * 开放式秘籍排序
     * <p/>
     * sort_id：排序的方式，可为空默认1，综合1，最热2，最新3，支持人数4，价格最高5，价格最低6
     */
    public void addSortId_kf() {
        if (sortId.size() != 0) {
            return;
        }
        sortId_kf.add(new PopupData(1, "综合", 0, null));
        sortId_kf.add(new PopupData(2, "最热", 1, null));
        sortId_kf.add(new PopupData(3, "最新", 2, null));
        sortId_kf.add(new PopupData(5, "价格最高", 4, null));
        sortId_kf.add(new PopupData(6, "价格最低", 5, null));

    }


    /**
     * 添加资料类型数据
     */
    public void addDataType() {
        if (sortId.size() != 0) {
            return;
        }
        dataTypes.add(new PopupData(1, "烹饪管理", 1, null));
        dataTypes.add(new PopupData(2, "厨房管理", 2, null));
        dataTypes.add(new PopupData(3, "前厅管理", 3, null));
        dataTypes.add(new PopupData(4, "营销管理", 4, null));
        dataTypes.add(new PopupData(5, "财务管理", 5, null));
        dataTypes.add(new PopupData(6, "人员培训", 6, null));

    }

    /**
     * 从接口中获取，职位 列表
     */
    private void getPositionData() {
        if (positionList.size() != 0) {
            return;
        }

        // 如果SharedPerences中有就从文件中读取
        if (getPositionSP.getAll().size() > 1) {
            HashMap<String, String> type = (HashMap<String, String>) getPositionSP.getAll();
            int i = 0;
            //map的转换
            for (Map.Entry<String, String> entry : type.entrySet()) {
                positionMap.put(Integer.parseInt(entry.getKey()), entry.getValue());

            }
            for (Map.Entry<Integer, String> entry : positionMap.entrySet()) {
                PopupData data = new PopupData();
                data.setId(entry.getKey());
                data.setTitle(entry.getValue());
                positionList.add(data);
                i++;
            }
            return;

        }

        // 加载职位列表...
        httpUtils.send(HttpMethod.GET, HttpInterfaces.GetJobList, new MyRequestCallBack<String>(this, "") {
            @Override
            public void onSuccess(ResponseInfo<String> responseInfo) {
                super.onSuccess(responseInfo);
                try {
                    JSONObject json = new JSONObject(responseInfo.result);

                    int status = json.getInt("Result");
                    if (status == 0) {
                        // 把jso 转换成数组
                        JSONArray relate = json.getJSONArray("list");

                        for (int i = 0; i < relate.length(); i++) {
                            // 得到数组中的每一个对象
                            JSONObject relateItem = relate.getJSONObject(i);
                            // data赋值
                            PopupData data = JsonHelper.parseObject(relateItem, PopupData.class);
                            // 添加到集合中
                            positionList.add(data);
                            // 把职位存入SharedPerences
                            setPositionSP.putString(data.getId() + "", data.getTitle());
                            setPositionSP.commit();

                        }

                    } else {

                    }

                } catch (JSONException e) {
                    e.printStackTrace();

                }

            }
        });
    }

    /**
     * 从接口中获取，菜系 列表
     */
    public void getSytleOfCookingData() {
        if (styleOfCookingList.size() != 0) {
            return;
        }


        // 如果SharedPerences中有就从文件中读取
        if (getCuisineSP.getAll().size() > 1) {
            //1,先使用hashMap接收
            HashMap<String, String> temp = (HashMap<String, String>) getCuisineSP.getAll();
            int i = 0;

            //2,把hashMap转换成TreeMap
            for (Map.Entry<String, String> entry : temp.entrySet()) {
                cuisineMap.put(Integer.parseInt(entry.getKey()), entry.getValue());

            }
            //3,再用使用TreeMap给list赋值
            for (Map.Entry<Integer, String> entry : cuisineMap.entrySet()) {
                PopupData data = new PopupData();
                data.setId(entry.getKey());
                data.setTitle(entry.getValue());
                styleOfCookingList.add(data);
                i++;
            }
            return;

        }


        // 加载菜系列表...
        httpUtils.send(HttpMethod.GET, HttpInterfaces.GetPositionList,
                new MyRequestCallBack<String>(this, "") {
                    @Override
                    public void onSuccess(ResponseInfo<String> responseInfo) {
                        super.onSuccess(responseInfo);
                        try {
                            JSONObject json = new JSONObject(responseInfo.result);

                            int status = json.getInt("Result");
                            if (status == 0) {
                                // 把jso 转换成数组
                                JSONArray relate = json.getJSONArray("list");

                                for (int i = 0; i < relate.length(); i++) {
                                    // 得到数组中的每一个对象
                                    JSONObject relateItem = relate.getJSONObject(i);
                                    // data赋值
                                    PopupData data = JsonHelper.parseObject(relateItem, PopupData.class);
                                    // 添加到集合中
                                    styleOfCookingList.add(data);

                                    // 把职位存入SharedPerences
                                    setCuisineSP.putString(data.getId() + "", data.getTitle());
                                    setCuisineSP.commit();

                                }

                            } else {

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                });


        // 获取学习资料的分类栏目
        httpUtils.send(HttpMethod.GET, HttpInterfaces.xuexiziliao_GetCategoryList,
                new MyRequestCallBack<String>(this, "")

                {
                    @Override
                    public void onSuccess(ResponseInfo<String> responseInfo) {
                        super.onSuccess(responseInfo);
                        try {
                            JSONObject json = new JSONObject(responseInfo.result);

                            int status = json.getInt("Result");
                            if (status == 0) {
                                JSONArray relate = json.getJSONArray("list");

                                for (int i = 0; i < relate.length(); i++) {
                                    JSONObject relateItem = relate.getJSONObject(i);
                                    PopupData data = JsonHelper.parseObject(relateItem, PopupData.class);
                                    dataTypes.add(data);

                                    dataTypesSP.putString(data.getId() + "", data.getTitle());
                                    dataTypesSP.commit();

                                }

                            } else {

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }

        );
    }


    /**
     * 得到城市列表
     */
    private void getCityData() {

        try {
            if (dbUtils.count(ItemCityData.class) > 1) {
//				MyLog.i("text", "*EEE**" + dbUtils.count(ItemCityData.class));// *****
                cityDataList = (ArrayList<ItemCityData>) dbUtils.findAll(ItemCityData.class);
                return;
            }

        } catch (DbException e1) {

            e1.printStackTrace();
        }


        httpUtils.send(HttpMethod.GET, HttpInterfaces.GetCityList, new MyRequestCallBack<String>(this, "加载城市列表...") {
            @Override
            public void onSuccess(ResponseInfo<String> responseInfo) {
                super.onSuccess(responseInfo);
                try {
                    JSONObject json = new JSONObject(responseInfo.result);

                    int status = json.getInt("Result");
                    if (status == 0) {
                        JSONArray relate = json.getJSONArray("list");
                        // 把数据从接口解析出来
                        cityDataList.addAll(JsonHelper.parseCollection(relate, ArrayList.class, ItemCityData.class));
                        // 保存到数据库
                        dbUtils.saveAllAutoThrows(cityDataList);

                    } else {

                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        });
    }


}



